Cloudflare Workers Demo — Cheat Sheet
~10–15 min · Walk every tab → end at the live site · "Italic quotes" = phrases, your words are better · ▶ = action
Before the call
- Cloudflare dashboard logged in · Navigate to the dustins-hub Worker Overview tab
- Live Dustin's Hub site open in a second browser tab:
https://dustins-hub.dustinburke23nc.workers.dev/
- Email inbox open in a third tab
- Run the submit-form → receive-email loop once, 5 minutes before, to warm everything up
0. Open (~1 min)
"I built a small consulting site called Dustin's Hub. It captures leads, sends me an email when someone wants an audit, costs effectively nothing per month. There's no server behind it — the whole thing runs on Cloudflare Workers. Let me walk you through how it's built."
Tab 1. Overview
▶ You're already on the Overview tab — the dustins-hub Worker
"Home page for one Worker project. Everything here is a summary of how it's set up."
a) Deployment URL bar (top)
"dustins-hub.dustinburke23nc.workers.dev — URL Cloudflare assigned automatically. Anyone in the world can hit it right now. It says 'Automatic deployment on upload' — meaning every time I save my code, it goes live globally within seconds."
b) Architecture diagram (middle)
"Whole project at a glance. Left: inputs — Domains, Workers, Queues. Middle: my Worker, dustins-hub. Right: bindings — connections to other Cloudflare resources like databases or storage."
"Notice Observability — Workers Logs Enabled. Every request gets logged automatically. I'll show you that in a minute."
c) Metrics summary (Last 24 hours)
"Requests, errors, CPU time. Quiet day — six requests, zero errors. CPU time per request under a millisecond. That's the kind of efficiency you get running on the edge."
d) Request Distribution map (bottom)
"Where requests are coming from globally. Right now just me. If a million people hit this from around the world, dots light up everywhere — whoever visits gets served from the data center closest to them. Not one server in Virginia."
e) Domains & Routes panel (right side)
"Where you'd connect a custom domain. Right now I'm using the workers.dev URL Cloudflare gave me. For production, I'd point my own domain here."
Edit Code (~3 min)
▶ Click Edit Code top right → open index.js
"This is the brain. Whole backend is ~60 lines, one file. Don't worry if you don't read code — I'll narrate three patterns."
Pattern 1 — Decide: form submission or page view?
if (request.method === "POST") { ... }
"First thing the Worker checks: is this a POST? If yes, someone submitted the form. If not, just serve the webpage."
Pattern 2 — Read the email out of the form
const formData = await request.formData();
const email = formData.get("email");
"Parse form data the browser sent, grab the email field. Standard — same pattern you'd use on any backend."
Pattern 3 — Call the email service
await fetch("https://api.resend.com/emails", {
method: "POST",
headers: {
"Authorization": `Bearer ${env.RESEND_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
from: "onboarding@resend.dev",
to: "dustinburke23nc@gmail.com",
subject: "New Lead from Worker",
text: `New signup: ${email}`
})
});
"Where the work happens. Worker calls Resend — an email service — asks it to send me a notification with the visitor's address."
"Look at this line — env.RESEND_API_KEY. That's the API key Cloudflare hands the Worker at runtime. The actual key value isn't in this code anywhere. It's pulled from the vault. I'll show you the vault next."
→ Click back arrow / breadcrumb to return to the Worker overview.
Tab 2. Metrics
▶ Click the Metrics tab
"Zoom-in version of the metrics box on Overview. Full graphs — 24 hours, 7 days, 30 days."
- Total requests over time
- Error rate
- CPU time — P50 vs. P99 latency
- Subrequests — outbound calls the Worker made (to the email service, e.g.)
"How you watch a Worker scale. Launch something and it goes viral, this graph spikes — but nothing on your end breaks. Cloudflare scales it automatically."
Tab 3. Deployments
▶ Click the Deployments tab
"Every time I save my code, that's a new deployment. Full history — who, when, what changed."
- List of past deployments with timestamps
- Current active version (marked)
- Rollback button on any prior version
"If I break something, one-click rollback to a previous version. Safer than most CI/CD setups, with zero configuration."
Tab 4. Bindings
▶ Click the Bindings tab
"Bindings are how a Worker connects to other Cloudflare resources — databases, file storage, caches, queues, even other Workers. Right now I have zero, because the Hub only needs to send emails."
Examples I could add:
- D1 — serverless SQLite database, if I wanted to store every lead
- KV — key-value store, for caching or feature flags
- R2 — file storage with no egress fees, for backups or uploads
- Workers AI — run an LLM directly from the Worker
- Service binding — call another Worker without going over the public internet
"All a few clicks to add. No separate account, no separate billing, no API keys to manage. The Worker code just sees them as objects it can talk to. That's the part of Cloudflare most people underestimate."
Tab 5. Observability
▶ Click the Observability tab
"Where logs and tracing live. On Overview you saw Workers Logs marked Enabled — this is the page where you actually view them."
- The live log stream (or a Begin log stream button)
- Filters for status code, method, path
- Any
console.log output from the code
Do this:
- Start the log stream
- Switch to the live site tab, submit the form
- Come back — the request appears here within a second
"No log forwarder, no DataDog agent, no third-party tool. This is included. If something's broken, the answer is two clicks away."
Tab 6. Settings
▶ Click the Settings tab
"All the configuration. Three sections worth showing:"
Variables and Secrets (the vault)
▶ Scroll to / click Variables and Secrets
RESEND_API_KEY entry
- Type column — Secret
- Value column — hidden
"The vault. When I added the API key as a Secret, it got encrypted. Now I can't view it back — not even me. I can overwrite or delete, but I can't read it. The Worker uses it at runtime, but it never shows up in the page, the browser, or any log."
Triggers
▶ Scroll to / click Triggers (or Domains & Routes)
"How the Worker gets called. Default: the workers.dev URL anyone can hit. You can also add a custom domain, route specific paths to it, or set up a cron schedule to run automatically every hour."
Other Settings
"Rest of Settings is advanced — CPU limits, compatibility dates, placement strategy. None of which I've had to touch for this project."
The Payoff — Watch it Work End-to-End (~3 min)
Live submission demo
▶ Switch to the second browser tab — the live Dustin's Hub site (https://dustins-hub.dustinburke23nc.workers.dev/)
"You've seen the whole stack. Now let me show you what it actually does for a visitor."
Do this:
- Scroll to the lead-capture form
- Type a real email address
- Click Get a Free Audit
- Wait for the success message
→ Switch back to the dashboard Observability tab
"There's the request, live. POST to /submit, status 200, response time in milliseconds."
→ Switch to the email inbox tab
"And here's the lead notification, in my actual inbox. Form submitted, Worker caught it, pulled the API key from the vault, called the email service. End to end — about one second."
⏸ Pause. Let it land.
Close (~1 min)
"That's the whole thing. One dashboard, one Worker, one file, one secret. No server, no hosting bill, no patching. If you have a use case in mind — a form, a webhook, an internal tool — I can stand up a working prototype on Cloudflare in a week."
If cautious:
"No pressure today. Open the site I just showed you on your phone, share the URL. The proof is in the experience."
THE WORKERS POINT
No server. No hosting bill. No patching. No scaling worry.
Code lives in 300+ locations globally. Deploys in seconds. Rolls back in one click.
Secrets encrypted, never visible — not even to you.
"This isn't 'serverless' as a buzzword. It's actually one file, one dashboard, one bill."
If something breaks during the demo
- Screenshots saved of each tab + live site + form submission + email
- 60-second screen recording on Loom as backup
- Recovery line: "Perfect timing — let me check the logs." Open Observability. A graceful recovery beats a flawless demo.
Quick Answers — back-pocket
Is this secure?
Secrets are encrypted and unreadable. No server to hack. Cloudflare protects ~20% of the internet from attacks — included.
What if Cloudflare goes down?
Code runs in 300+ locations. Uptime beats most companies' own data centers.
Is this only for small projects?
No. Shopify, DoorDash, Discord, Fortune 500s use the same platform.
What if I need a database?
D1 (SQLite), R2 (file storage, no egress fees), KV (cache). Added as bindings in a few clicks — you saw the Bindings tab.
Pricing?
Free tier: 100,000 requests/day. Above that, ~$5/month for 10 million. Most projects pay nothing.
How long to deploy?
From scratch — hours to a day. If already on Cloudflare DNS — minutes.
Can I write the code with AI?
Yes. Plain JavaScript. Cursor, ChatGPT, Claude all write good Worker code.